#!/usr/bin/env python3
"""
用户服务配置验证脚本
===================

验证用户服务配置的完整性和正确性
"""

import sys
import os
from pathlib import Path

# 添加项目路径
project_root = Path(__file__).parent.parent.parent.parent.parent
sys.path.insert(0, str(project_root))

from redfire_framework.core.config import (
    get_config,
    validate_config,
    generate_env_template
)


def main():
    """主函数"""
    print("🔍 验证用户服务配置...")
    
    try:
        # 验证配置
        is_valid, errors = validate_config()
        
        if is_valid:
            print("✅ 配置验证通过!")
            
            # 显示配置摘要
            config = get_config()
            print(f"\n📋 配置摘要:")
            print(f"  服务名称: {config.service_name}")
            print(f"  服务版本: {config.service_version}")
            print(f"  运行环境: {config.environment}")
            print(f"  服务端口: {config.port}")
            print(f"  调试模式: {config.debug}")
            print(f"  JWT算法: {config.jwt_algorithm}")
            print(f"  密码最小长度: {config.password_min_length}")
            print(f"  启用审计: {config.enable_audit_logging}")
            print(f"  启用限流: {config.enable_rate_limiting}")
            
            # 显示数据库连接状态
            if config.database_url:
                print(f"  数据库: 已配置")
            else:
                print(f"  数据库: ⚠️ 未配置")
                
            if config.redis_url:
                print(f"  Redis: 已配置")
            else:
                print(f"  Redis: ⚠️ 未配置")
            
        else:
            print("❌ 配置验证失败:")
            for error in errors:
                print(f"  - {error}")
            sys.exit(1)
            
    except Exception as e:
        print(f"❌ 配置验证异常: {str(e)}")
        sys.exit(1)


def generate_template():
    """生成环境变量模板"""
    print("📝 生成环境变量模板...")
    
    template = generate_env_template()
    template_file = Path(__file__).parent.parent / "config" / ".env.template"
    
    try:
        template_file.parent.mkdir(exist_ok=True)
        template_file.write_text(template, encoding="utf-8")
        print(f"✅ 模板已生成: {template_file}")
    except Exception as e:
        print(f"❌ 生成模板失败: {str(e)}")
        sys.exit(1)


if __name__ == "__main__":
    if len(sys.argv) > 1 and sys.argv[1] == "template":
        generate_template()
    else:
        main()
